The CMemBmp class implements a memory bitmap.
You can create an empty bitmap of the specified width an height, e.g.
DIM pMemBmp AS CMemBmp = CMemBmp(500, 400)
or loading an image
DIM pMemBmp AS CMemBmp = CMemBmp($"C:\Users\Pepe\Pictures\MyPicture.jpg")
You can manipulate its contents using GDI+ or GDI, e.g.
Rectangle pMemBmp.GetMemDC, 10, 10, 150, 150
LineTo pMemBmp.GetMemDC, 30, 180
And you can display it in a Graphic Control, e.g.
pGraphCtx.DrawBitmap pMemBmp
The bitmap can be saved to a file with
SaveBitmap
SaveBitmapAsBmp
SaveBitmapAsJpeg
SaveBitmapAsPng
SaveBitmapAsGif
SaveBitmapAsTiff
Finally, the PrintBitmap method prints the bitmap in the default printer.
The bitmap created by CMemBmp is a DDB (Device-Dependent Bitmap), compatible with the device that is associated with the specified device context (hDC parameter of the default constructor). If no device context is specified or the memory bitmap is constructed using the other two additional constructors (the one that use an image from a disk file or a resource file), the created memory bitmap will be compatible with the device context of the screen.
To create a DIB (device-independent bitmap) from the memory bitmap, use the function GetDIBits.
To create a GDI+ bitmap from the memory bitmap, use the function GdipCreateBitmapFromHBITMAP.
As the CGraphCtx graphic control uses DIBs, to draw a CMemBmp memory bitmap into it call the method DrawBitmap of the CGraphCtx class.
| Name | Description |
|---|---|
| Constructor(Width,Height) | Creates an empty memory bitmap of the specified size. |
| Constructor(FileName) | Creates a memory bitmap of the same size that the specified image to load. |
| Constructor(ResourceFile) | Creates a memory bitmap of the same size that the specified image to load from a resource file. |
| Name | Description |
|---|---|
| DrawBitmap | Draws a bitmap in the memory bitmap. |
| GetBitsPixel | Returns the number of bits required to indicate the color of a pixel. |
| GethBmp | Returns the handle of the compatible memory bitmap. |
| GetHeight | Returns the height of the memory bitmap in pixels. |
| GetMemDC | Returns the handle of the memory device context of the bitmap. |
| GetPixel | Retrieves the red, green, blue (RGB) color value of the pixel at the specified coordinates. |
| GetPlanes | Returns the count of color planes of the memory bitmap. |
| GetWidth | Returns the width of the memory bitmap in pixels. |
| GetWidthBytes | Returns the number of bytes in each scan line of the memory bitmap. |
| PrintBtmap | Prints the bitmap in the default printer. |
| SaveBitmap | Saves the bitmap to a file. |
| SetPixel | Sets the pixel at the specified coordinates to the specified color. |
Creates an empty memory bitmap of the specified size.
CONSTRUCTOR CMemBmp (BYVAL nWidth AS LONG = 0, BYVAL nHeight AS LONG = 0, _
BYVAL hdc AS .HDC = NULL, BYVAL clrBkg AS COLORREF = BGR(255, 255, 255))
| Parameter | Description |
|---|---|
| nWidth | Optional. The width of the bitmap. |
| nHeight | Optional. The height of the bitmap. |
| hdc | Optional. A handle to a device context. If no device context is provided, the one of the screen will be used. |
| clrBkg | Optional. The background color of the bitmap. Default is white. |
Creates a memory bitmap of the same size that the specified image to load. It also allows to convert the image to gray scale and/or dim the image.
CONSTRUCTOR CMemBmp (BYREF wszFileName AS WSTRING, BYVAL dimPercent AS LONG = 0, _
BYVAL bGrayScale AS LONG = FALSE, BYVAL clrBackground AS ARGB = 0)
| Parameter | Description |
|---|---|
| wszFileName | Absolute path to the file. |
| dimPercent | Optional. The height of the bitmap. |
| bGrayScale | Optional. A handle to a device context. If no device context is provided, the one of the screen will be used. |
| clrBackground | Optional. The background color of the bitmap. Default is white. |
Creates a memory bitmap of the same size that the specified image to load from a resource file. It also allows to convert the image to gray scale and/or dim the image.
CONSTRUCTOR CMemBmp (BYVAL hInst AS HINSTANCE, BYREF wszImageName AS WSTRING, BYVAL dimPercent AS LONG = 0, _
BYVAL bGrayScale AS LONG = FALSE, BYVAL clrBackground AS ARGB = 0) AS HANDLE
| Parameter | Description |
|---|---|
| hInst | A handle to the module whose portable executable file or an accompanying MUI file contains the resource. If this parameter is NULL, the function searches the module used to create the current process. |
| wszImageName | Name of the image in the resource file (.RES). If the image resource uses an integral identifier, wszImage should begin with a number symbol (#) followed by the identifier in an ASCII format, e.g., "#998". Otherwise, use the text identifier name for the image. Only images embedded as raw data (type RCDATA) are valid. These must be icons in format .png, .jpg, .gif, .tiff. |
| dimPercent | Optional. The height of the bitmap. |
| bGrayScale | Optional. A handle to a device context. If no device context is provided, the one of the screen will be used. |
| clrBackground | Optional. The background color of the bitmap. Default is white. |
Draws a bitmap in the memory bitmap.
SUB DrawBitmap (BYVAL hbmp AS HBITMAP, BYVAL x AS SINGLE = 0, BYVAL y AS SINGLE = 0, _
BYVAL nRight AS SINGLE = 0, BYVAL nBottom AS SINGLE = 0) AS GpStatus
SUB DrawBitmap (BYVAL pBitmap AS GpBitmap PTR, BYVAL x AS SINGLE = 0, BYVAL y AS SINGLE = 0, _
BYVAL nRight AS SINGLE = 0, BYVAL nBottom AS SINGLE = 0) AS GpStatus
| Parameter | Description |
|---|---|
| hbmp | A handle to the bitmap. |
| pBitmap | A pointer to a GDI+ bitmap |
| x | Optional. Left position. |
| y | Optional. Top position. |
| nRight | Optional. Right position. |
| nBottom | Optional. Bottom position. |
Returns OK (0) on success or a GdiPlus status code on failure.
Returns the number of bits required to indicate the color of a pixel.
FUNCTION GetBitsPixel () AS LONG
Returns the handle of the compatible memory bitmap.
FUNCTION GethBmp () AS HBITMAP
Returns the height of the memory bitmap in pixels.
FUNCTION GetHeight () AS LONG
Returns the handle of the memory device context of the bitmap.
FUNCTION GetMemDC () AS HDC
Retrieves the red, green, blue (RGB) color value of the pixel at the specified coordinates.
FUNCTION GetPixel (BYVAL x AS LONG, BYVAL y AS LONG) AS COLORREF
| Parameter | Description |
|---|---|
| x | The x-coordinate, in logical units, of the pixel to be examined. |
| y | The y-coordinate, in logical units, of the pixel to be examined. |
The return value is the COLORREF value that specifies the RGB of the pixel. If the pixel is outside of the current clipping region, the return value is CLR_INVALID (hFFFFFFFF defined in Wingdi.bi).
The function fails if the pixel coordinates lie outside of the current clipping region.
Returns the count of color planes of the memory bitmap.
FUNCTION GetPlanes () AS LONG
Returns the width of the memory bitmap in pixels.
FUNCTION GetWidth () AS LONG
Returns the number of bytes in each scan line of the memory bitmap.
FUNCTION GetWidthBytes () AS LONG
Prints the bitmap in the default printer.
FUNCTION PrintBtmap (BYVAL bStretch AS BOOLEAN = FALSE, _
BYVAL nStretchMode AS LONG = InterpolationModeHighQualityBicubic) AS BOOLEAN
| Parameter | Description |
|---|---|
| bStretch | Optional. Stretch the image (TRUE or FALSE). |
| nStretchMode | Stretching mode. InterpolationModeLowQuality = 1 InterpolationModeHighQuality = 2 InterpolationModeBilinear = 3 InterpolationModeBicubic = 4 InterpolationModeNearestNeighbor = 5 InterpolationModeHighQualityBilinear = 6 InterpolationModeHighQualityBicubic = 7 Default value = InterpolationModeHighQualityBicubic. |
Returns TRUE if the bitmap has been printed successfully, or FALSE otherwise.
Saves the bitmap to a file.
FUNCTION SaveBitmap (BYREF wszFileName AS WSTRING, BYREF wszMimeType AS WSTRING) AS LONG
FUNCTION SaveBitmapAsBmp (BYREF wszFileName AS WSTRING) AS LONG
FUNCTION SaveBitmapAsJpeg (BYREF wszFileName AS WSTRING) AS LONG
FUNCTION SaveBitmapAsPng (BYREF wszFileName AS WSTRING) AS LONG
FUNCTION SaveBitmapAsGif (BYREF wszFileName AS WSTRING) AS LONG
FUNCTION SaveBimapAsTiff (BYREF wszFileName AS WSTRING) AS LONG
| Parameter | Description |
|---|---|
| wszFileName | Absolute path name of the file. |
| wszMimeType | The mime type. "image/bmp" = Bitmap (.bmp) "image/gif" = GIF (.gif) "image/jpeg" = JPEG (.jpg) "image/png" = PNG (.png) "image/tiff" = TIFF (.tiff) |
Sets the pixel at the specified coordinates to the specified color.
FUNCTION SetPixel (BYVAL x AS LONG, BYVAL y AS LONG, BYVAL crColor AS COLORREF) AS COLORREF
| Parameter | Description |
|---|---|
| x | The x-coordinate, in logical units, of the point to be set. |
| y | The y-coordinate, in logical units, of the point to be set. |
| crColor | The color to be used to paint the point. To create a COLORREF color value, use the BGR macro. |
If the function succeeds, the return value is the RGB value that the function sets the pixel to. This value may differ from the color specified by crColor; that occurs when an exact match for the specified color cannot be found. If the function fails, the return value is CLR_INVALID (hFFFFFFFF defined in Wingdi.bi).
The function fails if the pixel coordinates lie outside of the current clipping region.